iT邦幫忙

1

[Deploy to Render] 什麼是 Render

  • 分享至 

  • xImage
  •  

什麼是 Render?

身為一個網路軟體開發者,程式寫完測完本機跑完後,下一個問題就是要部署在哪裡了。除了自建機房、租機櫃以外,我想大部分的人在第一時間都會考慮那幾家雲端服務提供者,像是 AWS、GCP、Azure,畢竟牌子老信用好,教學資源多 被老闆問起來也不用多做解釋

不過,有時候會覺得 AWS/GCP/Azure 雖然強大但好複雜啊!包山包海到底我的需求該用他們的哪一項產品呢?我只是想要把我本機跑得起來的東西部署出去,讓用戶存取得到啊!當然,我可以花時間研讀他們的文件,Google 和 stackoverflow 也是我的好朋友,但有沒有更簡單方便的方式?至少在一開始讓我的程式輕鬆上線?

假如你也有過相似的感受,你可以試試看 Render。Render 是一個新的 PaaS( Platform as a service)雲端服務,也就是說你的程式碼部署到 Render 之後,你不用(也不能)去管 Linux/firewall/nginx 的設定。把你的 Github 網址給 Render,設定一下用滑鼠點點點,等個幾分鐘,你的程式就上線了,全世界都能看到你的網站或是存取你提供的 API。

利益揭露:雖然到職才幾個月不過我現在是 Render 的正職員工。內舉不避親,老王賣瓜自賣自誇,覺得自家產品好用也希望更多人用,因此開始寫這系列文章。請大家不吝惜指教吐槽。

有名的 PaaS 提供者包含 Heroku、Google App Engine、AWS Elastic Beanstalk。PaaS 方便的代價就是只能在上面跑他們支援的程式語言或是框架。Render 除了支援主流的語言和框架外,也支援 Dockerfile,所以理論上可以跑任何的 Docker container。

誰適合用 Render?

我想要部署靜態網站(static website)

Render 很適合用來部署靜態網站。首先,免費!前 100 GB 流量都免費!再來,Render 會用 CDN 降低使用者讀取你的網站的延遲。Render 也會自動幫你的網站加上 SSL 憑證,假如你有自己的網域名稱,你也可以把這個網域名稱指向你在 Render 的網站,Render 會幫你管理這個網域名稱的 SSL 憑證。另外,你也可以對每個網頁路徑設定 HTTP 回應的標頭(header),也可以對網頁路徑加上 redirect/rewrite 規則。

Render 支援一些靜態網站產生器,像是 HugoJekyll,當然也支援 ReactVue,以及衍生的框架像是 GatsbyNext.jsNuxt.js。部署之前,Render 會幫你編譯和打包,你也可以部署多個版本到不同網站來做測試(反正是免費的)。

流量超過 100GB 之後,每 GB 收 0.1 美元

Render 的 CDN 是由 Fastly 提供。

能免費放靜態網站的地方,最有名的應該是 Github Pages 了,Netlify 和 Vercel 也提供和 Render 類似的功能。

我想要部署 Node/Rails/Django/Flask/Phoenix/Laravel 等網路服務,但我沒時間去研究 AWS/GCP/Azure,公司裡面也沒有 IT/SRE/DevOps

不可否認,現在 Render 的功能的數量遠遠不及 AWS/GCP/Azure,而且不像靜態網站是免費的,在 Render 部署網路服務(Web Service)要收錢,也沒有免費的額度可以用(只有前七天免費)。那為什麼要用 Render?

簡單好用,理由大概就這樣吧!

Render 支援「剛好夠用」的功能。你只要給 Render 存放程式碼的 GitHub/GitLab 網址和分支(branch),以及組建(build)和執行的指令,Render 就會完成剩下的工作:把程式碼抓下來編譯打包好放到伺服器上設定系統資源網址路徑安全規則,然後 Render 就會給你一個網址,你的網站或網路服務就上線啦!不需要太多繁雜的設定,頂多再加上一些環境變數(通常用來分別不同環境的設定),或是將你自己買的網域名稱指向 Render 提供給你的網址。

你可以從 Render 的網站對你的網路服務做一些基本管理,像是看 log,看 CPU 和記憶體用量,甚至直接用 web terminal 登入到你的網路服務。當你寫好新的程式碼時,你可以設定成只要有新的 commit 進入指定的分支(通常是 master 或 release),Render 就自動幫你部署。假如網路服務死了, Render 會自動重啟,並起寄信或用 Slack 通知你。假如新部署的版本有問題,你也可以在 Render 的網站輕鬆點一下就回復到之前部署過的任何版本。

Render 當然不是萬能,假如你需要 Hadoop 或 Spark 處理大數據,或是需要 GPU 去算人工智慧,現階段 Render 沒有提供足夠的功能支援這些需求。但對於大部分人需要的一般功能,Render 讓部署和管理變得簡單。

我需要部署 Docker Container,但我沒時間去學 Kubernetes

你可能因為各種理由將你的網路服務或應用程式「容器化」。但要在哪裡部署這個容器化的程式?Kubernetes 漸漸成為業界標準,雲端大廠也推出了 GKE/EKS/AKS,而 Render 提供更簡單的部署方法。你可以直接部署 Dockerfile 到 Render,Render 會從 Dockerfile 建立映像檔,再從映像檔部署網路服務。你可以設定這個網路服務需要的 CPU 和記憶體(根據不同的方案),需要幾個實體(instances)或是根據 CPU 和記憶體的負載自動增加或減少實體(autoscaling),需不需要外掛磁碟。在服務上線後,這些設定全部都可以根據需求隨時變更。

使用 Render 幫你部署容器的好處就是不用去搞懂 pod/replicaset/deployment/service/node/pv/pvc 等 Kubernetes 的概念就可以享受相對應的功能,也不用去煩惱如何去維護 Kubernetes 叢集。不過跟 GKE/EKS/AKS 相比,花費可能會高一點,隨著部署的規模增加這可能會是一個考量點。

我需要 PostgreSQL 資料庫

大部分的網路服務都需要把狀態或是資料存在某個地方。Render 除了可以幫你部署網路服務之外,也提供代管的 PostgreSQL 資料庫。部署在 Render 的網路服務可以直接存取資料庫的資料,你也可以用 PSQL 指令連進去管理。資料庫的資料每天會自動備份,確保意外發生時資料不會掉太多(不過目前還不支援從備份的資料自動回復,需要手動做)。安全方面,除了帳號密碼外,你可以設定這個資料庫只有某些 IP 可以存取,或是任何地方都可以連得到。

啊,不過資料庫也是要收錢的,最便宜的一個月 7 美金。我是沒有認真比較過其他線上資料庫的價格,不確定是划算還是貴森森。對於網路服務也部署在 Render 的人來說,資料庫放在同一個資料中心延遲小存取快,而且管理方便,算是一個好處吧。

Render 也提供 Redis

我需要架論壇/部落格/其他網站

有時候你想部署的不是你自己寫的程式,你想要部署開源的軟體,比如說 WordPressMetabase 甚至 Discourse。Render 有收集一些知名的開源軟體,並且把大部分的設定做好,你只要簡單按下去,輸入一些關鍵資料(API key 之類的)到環境變數,你需要的軟體就架好了。

這種部署方式甚至不需要自己有 GitHub 帳號,直接使用 Render 提供的版本就好。假如需要更多的客製化,可以 fork Render 的版本到自己的 GitHub repo 再進行修改,部署上依舊可以享受 Render 簡單設定的好處。

使用 Render 的考量

看到這邊,雖然這是一篇看起來像是業配的 Render 介紹文,不過要不要用 Render 的考量還蠻簡單的:

你願不願意為了簡單好用的部署而花錢使用一個非大廠的產品?

每個人認為的「簡單好用」不一樣。簡單好用的背後就是 Render 幫你做了很多決定,讓你不用管太多部署細節。這些決定可能適合 99% 的用戶,但卻不適合你,甚至儘管適合你,但你需要更有彈性的修改。這種情況下,Render 對你來說就不是「簡單好用」,也就根本不用考慮了(當然我們希望你提供意見讓我們改進啦)。

就算你認同 Render 的簡單好用,「簡單好用」這件事在每個人心中的「價值」可能也不一樣。假如 Render 比 AWS 貴,但因為簡單好用可以讓你的服務提早上線,你可能會因此願意多花一點錢,也可能你的時程根本不趕。Render,或是更廣泛地說,要不要用 PaaS 就是考慮帶來的好處對你的專案重不重要。

「非大廠」也是要不要用 Render 的一個考量。 大廠比較不會倒 但 Google 擅長收掉服務,大廠提供的產品線比較完整,大廠的產品比較容易找到教學資源和討論。這方面 Render 雖然漸漸獲得許多網路大咖的關注,但依舊差得遠。Render 目前依賴很努力的客服,無論是論壇或是客服信箱,大概都會在一個工作日回覆 想到下週要 oncall 客服就眼神死,小公司比較會在意用戶的意見與回饋。

Render 想必在短時間內不會有台灣代理商,所以關於境外稅的問題應該無解。

Render 目前的資料中心在美國西岸和歐洲法蘭克福。對於靜態網站沒什麼影響,不過對於網路服務來說假如客戶端在亞洲,延遲會比較高。(更新)Render 已經有提供美國東岸和亞洲新加坡的資料中心,對於亞洲用戶的連線品質應該有提升。

所以?

假如你要部署的是靜態網站,用用看 Render 吧!理論上不會花你太多時間而且不用花錢,你可以感受一下跟你現在使用的部署方式有什麼不一樣。

假如你要部署的是網路服務,而且是一個全新的專案,可能是個人的 side project,或是工作室的新案子,或是實驗性質的 POC (proof of concept),在預算允許下可以試試看 Render。7 美金相當於兩杯星巴克或四杯50嵐就可以用一個月(再加上前七天免費試用)最小的方案,因為是以秒計費所以發現苗頭不對也可以隨時關掉,只會收當月有使用的量。

Render 已經有提供免費方案,請看這一篇的介紹

假如你的公司已經在用 AWS/GCP/Azure,但沒有專人在管,或是你就是那個負責人但是你覺得分身乏術,Render 可能適合也可能不適合,可以評估看看,或是等 Render 再長大一點提供更完整的功能。

喔,假如你在用 Heroku,這邊有和 Render 的優劣比較


接下來這個系列會針對部署靜態網站、網路服務和 Dockerfile 到 Render 寫一些更詳細的範例,並多介紹一些 Render 的其他功能(雖然很大一部分應該就是從官方文件抄抄改改中文化)。請期待,也歡迎到 Render 註冊試用!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
arguskao
iT邦新手 3 級 ‧ 2022-06-02 08:36:58

聽起來很吸引人,等等去看看

我要留言

立即登入留言